package com.gov.ec.rsv.igm;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.primefaces.event.SelectEvent;

import com.gov.ec.rsv.interfaces.ICrudDao;
import com.gov.ec.rsv.modelo.Auditoria;
import com.gov.ec.rsv.modelo.Instalacion;
import com.gov.ec.rsv.modelo.Servicio;
import com.gov.ec.rsv.util.FacesUtil;
import com.gov.ec.rsv.util.PrimeFaceUtil;


public class ServiciosBean extends FacesUtil{

	//Objetos Permisos
//	private Boolean perEditar;
//	private Boolean perGuardar;
//	private Boolean perEliminar;
//	

	 /** La variable Cliente. */
    private Servicio servicio;
    private List<Servicio> listaServicios;
    private List<SelectItem> listaInstalaciones;
    private Auditoria auditoria;
    private String idInst;
	
    @EJB(name = "adminCrud/local")
	private ICrudDao adminCrud;

	public ServiciosBean() throws NamingException  {
		this.servicio = new Servicio();
		this.listaServicios = new ArrayList<Servicio>();
		InitialContext ic = new InitialContext();
		adminCrud= (ICrudDao) ic.lookup("RSVCCIGM/adminCrud/local");
	}

   
	/**
	 * Permite guardar o actulizar un objeto instalacion
	 * 
	 * @throws Exception 
	 */
	public void guardarServicio() {
		try {
			if (this.servicio.getIdServicios() !=0 ) {
						adminCrud.actualizar(servicio);
			} else {
					adminCrud.insertar(servicio);
			}
			resetearValores();
			super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.servicio.getDescripcion());
			this.servicio = new Servicio();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
	


	public void resetearValores(){
		this.servicio = new Servicio();
		this.idInst = "";
		// setServicio(new Servicio());
	}
	/**
	 * Permite eliminar un objeto Servicio
	 * @param event
	 * @autor 
	 */
	public void eliminarServicio(ActionEvent event) {
		if (getServicio()!= null) {
			try{
					adminCrud.eliminar(this.servicio);
			}catch(Exception e){
			}
		} else {
		}
	}

	/**
	 * Permite actualizar un objeto cliente
	 * @autor 
	 */
	public void editarServicio() {
		if (getServicio()!= null) {
			cargarCombos();
			super.addSuccessMessage("Servicio cargado "+this.servicio.getDescripcion());
			PrimeFaceUtil.saltarTabAcordeon("form:acoPanTec", 0);
		} else {
			
			super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.servicio.getDescripcion());
		}

	}

	public void cargarInstalacion() {
		Instalacion inst = (Instalacion) adminCrud.buscar(new Instalacion(),Integer.parseInt(idInst));
		this.servicio.setInstalacion(inst);
	}
	
	
	
	private void cargarServicios() {
		listaServicios = new ArrayList<Servicio>();
		List<Object> servicioTmp = adminCrud.consultarTodo(new Servicio());
		for (Object serTmp : servicioTmp) {
			listaServicios.add((Servicio) serTmp);
		}
	}
	private void cargarCombos() {
		Instalacion ins = new Instalacion();
		//ins =(Instalacione) adminCrud.consultarPorNombre(getAntenaSel().getTerrenoAnt());		
		ins =(Instalacion) adminCrud.buscar(new Instalacion(),this.servicio.getInstalacion().getIdInstalaciones());		
		setIdInst(ins.getIdInstalaciones()+"");
		cargarInstalacion();
	}
	
	/**
	 * Selecciona un objeto Institucion de un dataTable
	 * @param event
	 * @autor
	 */
	public void onRowSelect(SelectEvent event) {
		this.servicio = (Servicio) event.getObject();
		//setServicio((Servicio) event.getObject());
	}

	

	public List<Servicio> getListaServicios() {
		cargarServicios();
		return listaServicios;
	}

	public void setListaServicios(List<Servicio> listaServicios) {
		this.listaServicios = listaServicios;
	}

	public Auditoria getAuditoria() {
		return auditoria;
	}

	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}


	public Servicio getServicio() {
		return servicio;
	}


	public void setServicio(Servicio servicio) {
	//	this.servicio = servicio;
	}


	public String getIdInst() {
		return idInst;
	}


	public void setIdInst(String idInst) {
		this.idInst = idInst;
	}


	public void setListaInstalaciones(List<SelectItem> listaInstalaciones) {
		this.listaInstalaciones = listaInstalaciones;
	}


	public List<SelectItem> getListaInstalaciones() {
		List<Object> insTmp = adminCrud.consultarTodo(Instalacion.class);
		this.listaInstalaciones.clear();
		for (Object objIns : insTmp) {
			Instalacion ins = (Instalacion) objIns;
			this.listaInstalaciones.add(new SelectItem(ins.getIdInstalaciones(), ins.getDescripcion()));
		}
		return listaInstalaciones;
	}
}







